package com.yc.thread;

/**
 * 方案一: 继承Thread
 * @program: gitee3_thread
 * @description:
 * @author: zy
 * @create: 2024-07-14 09:18
 */
public class Test2_Thread {
    public static void main(String[] args) {
        System.out.println("主方法 的开头");
        MyThread mt=new MyThread();
        mt.start();   //线程启动用  start()
        //简写成:
        //new MyThread().start();

        //内部类
        InnerThread it=new InnerThread();
        it.start();   //启动线程要用start();  -> jvm会自动的调用  线程中的run()
       //  MyThrad. start()  ->  start0()  native  cpp  ->   run()

    }

    //因为要在  main()这个静态方法中调用  这个内部类，所以这个内部类声明时要加入static
    //内部类写法: 只有这个Test1_thread这个类才会用到 InnerThread
    static class InnerThread extends Thread{
        @Override
        public void run() {
            for(int i=0;i<=100;i++){
                System.out.println("内部类中j的值为:"+i);
                try {
                    Thread.sleep(1000);  // 100S
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

//方案一： 外部类 写一个类继承自Thread,   重写run()方法， 在这个方法加入耗时的操作或阻塞操作

class MyThread extends Thread{
    //run()方法中放入要执行的任务(  耗时的操作，阻塞操作 )
    @Override
    public void run() {
        for(int i=0;i<=100;i++){
            System.out.println("i的值为:"+i);
            try {
                Thread.sleep(1000);  // 100S
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

//java继承 是单继承    , 所以这样写线程极大限制类的可扩展性.
